import { TableColumnType, TooltipProps } from "ant-design-vue";

export interface MTableColumnType extends TableColumnType {
  // 组件类型
  component?: String,
  // 组件属性
  componentProps?: any
}

export interface ActionItem {
  // 按钮文本
  label: string;
  // 是否禁用
  disabled?: boolean;
  // 按钮颜色
  color?: 'success' | 'error' | 'warning';
  // 按钮类型
  type?: string;
  // button组件props
  props?: any;
  // button组件动态属性
  dynamicProps?: (row: any) => any
  // 按钮图标
  icon?: string;
  // 气泡确认框
  popConfirm?: PopConfirm;
  // 是否显示分隔线
  divider?: boolean;
  // 根据权限编码来控制当前列是否显示
  perms?: string;
  // 根据业务状态来控制当前列是否显示
  ifShow?: boolean | ((action: ActionItem, row: any) => boolean);
  // 点击回调
  onClick?: (e: Event, record: any) => void;
  // 提示语
  tooltip?: string | TooltipProps,
  // 排序
  orderNo?: number
}
export interface PopConfirm {
  title: string;
  okText?: string;
  cancelText?: string;
  confirm: (e: Event, record: any) => void;
  cancel?: (e: Event, record: any) => void;
  icon?: string;
}
export interface TableActionType {
  /**
   * 重新拉取数据
   * @param opt 
   */
  reload(opt?: any): Promise<any>
  /**
   * 设置表格大小
   * @param size 
   */
  setTableSize(size?: String): void
  /**
   * 更新列定义
   * @param columns 
   */
  updateColumns(columns: MTableColumnType[]): void
}